package Controlador;
import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import Modelo.MAccion;
import Modelo.MCliente;
import Vistas.VCliente;;

public class CCliente implements ActionListener{
	public VCliente vCliente;
	public MCliente cliente;
	public MAccion maccion;

	public CCliente(VCliente vcliente){
		vCliente=vcliente;
	}
		public void actionPerformed(ActionEvent ae) {
			if(ae.getActionCommand().equals(" Agregar ")){
				if(validarCampos()){
					if(validarLetras(vCliente.getTxtNomCli().getText()+vCliente.getTxtApeCli().getText()+vCliente.getTxtDirCli().getText())){
						if (validarCedula(vCliente.getTxtTelCli().getText())){
				cliente = new MCliente(Integer.parseInt(vCliente.getTxtCedCli().getText()),vCliente.getTxtNomCli().getText(),vCliente.getTxtApeCli().getText(),vCliente.getTxtTelCli().getText(),vCliente.getTxtDirCli().getText());
				maccion = new MAccion();
                maccion.registrarCliente(cliente);
                iniciar();
						}
						else
							JOptionPane.showMessageDialog(null,"Introduzca solo numeros en el telefono","Cliente", 
									JOptionPane.INFORMATION_MESSAGE);
					}else
						 JOptionPane.showMessageDialog(null,"Verifique no se encuentren letras en en el nombre,apellido y direccion","Cliente", 
									JOptionPane.INFORMATION_MESSAGE);
                
					}
				else
					 JOptionPane.showMessageDialog(null,"Debes llenar todos los datos","Cliente", 
								JOptionPane.INFORMATION_MESSAGE);
			}
			if(ae.getActionCommand().equals("Modificar")){
				if(validarCampos()){
					if(validarLetras(vCliente.getTxtNomCli().getText()+vCliente.getTxtApeCli().getText()+vCliente.getTxtDirCli().getText()) && validarCedula(vCliente.getTxtTelCli().getText())){
				maccion = new MAccion();
				cliente=new MCliente(Integer.parseInt(vCliente.getTxtCedCli().getText()),vCliente.getTxtNomCli().getText(),vCliente.getTxtApeCli().getText(),vCliente.getTxtTelCli().getText(),vCliente.getTxtDirCli().getText());
                maccion.modificarCliente(Integer.parseInt(vCliente.getTxtCedCli().getText()),cliente);
                iniciar();
					}else
						JOptionPane.showMessageDialog(null,"Verifique no se encuentren letras donde deben ir numeros y viceversa","Cliente", 
								JOptionPane.INFORMATION_MESSAGE);
				}
					else
						 JOptionPane.showMessageDialog(null,"Debes llenar todos los datos","Cliente", 
									JOptionPane.INFORMATION_MESSAGE);
				
			}
			if(ae.getActionCommand().equals("  Buscar  ")){
				if(!vCliente.getTxtCedCli().getText().equals("")){
					if (validarCedula(vCliente.getTxtCedCli().getText())){
						MCliente cliente=new MCliente();
				maccion = new MAccion();
				cliente=maccion.capturarCliente(Integer.parseInt(vCliente.getTxtCedCli().getText()));
				if(cliente!=null){
				vCliente.getTxtNomCli().setText(cliente.getNombre());
				vCliente.getTxtApeCli().setText(cliente.getApellido());
				vCliente.getTxtTelCli().setText(cliente.getTelefono());
				vCliente.getTxtDirCli().setText(cliente.getDireccion());
				   Encuentra();
				}
				else{
					 JOptionPane.showMessageDialog(null,"" +
					 		"El cliente no existe","Cliente", 
								JOptionPane.INFORMATION_MESSAGE);	
					 noEncuentra();
				}
					}else
						JOptionPane.showMessageDialog(null,"" +
						 		"Intoduzca solo numeros","Cliente", 
									JOptionPane.INFORMATION_MESSAGE);	
				
				}else
					 JOptionPane.showMessageDialog(null,"" +
						 		"Introduzca la cedula del cliente","Cliente", 
									JOptionPane.INFORMATION_MESSAGE);	
			}

			
if(ae.getActionCommand().equals("Cancelar ")){
	vCliente.getTxtCedCli().setText("");
	vCliente.getTxtNomCli().setText("");
	vCliente.getTxtApeCli().setText("");
	vCliente.getTxtTelCli().setText("");
	vCliente.getTxtDirCli().setText("");
	vCliente.getTxtCedCli().requestFocus();
			}
	
	if(ae.getActionCommand().equals("    Salir     ")){
		int opcion = JOptionPane.showConfirmDialog(new JFrame(),"Desea volver al menu anterior?",
				     "Mensaje de Confirmacion",JOptionPane.YES_NO_OPTION,
				     JOptionPane.QUESTION_MESSAGE);
		if (opcion == JOptionPane.YES_OPTION)
			vCliente.dispose();
	                         }
		}
		private boolean validarCampos()
		{
			boolean sw=false;
			if ((!vCliente.getTxtApeCli().getText().equals("")) && (!vCliente.getTxtNomCli().getText().equals("")) && (!vCliente.getTxtDirCli().getText().equals("")) && (!vCliente.getTxtTelCli().getText().equals("")))
			    sw=true;
			return sw;
		}
		public void iniciar(){
			vCliente.getBtnAgrCli().setEnabled(false);
			vCliente.getBtnModCli().setEnabled(false);
			vCliente.getBtnCanCli().setEnabled(false);
			vCliente.getTxtApeCli().setText("");
			vCliente.getTxtApeCli().setEditable(false);
			vCliente.getTxtNomCli().setText("");
			vCliente.getTxtNomCli().setEditable(false);
			vCliente.getTxtDirCli().setText("");
			vCliente.getTxtDirCli().setEditable(false);
			vCliente.getTxtTelCli().setText("");
			vCliente.getTxtTelCli().setEditable(false);
			vCliente.getTxtCedCli().setText("");
			vCliente.getTxtCedCli().requestFocus();
		}
		public void noEncuentra(){
			vCliente.getBtnAgrCli().setEnabled(true);
			vCliente.getTxtApeCli().setEditable(true);
			vCliente.getTxtNomCli().setEditable(true);
			vCliente.getTxtDirCli().setEditable(true);
			vCliente.getTxtTelCli().setEditable(true);
			vCliente.getTxtCedCli().setEditable(false);
		}
		public void Encuentra(){
			vCliente.getBtnModCli().setEnabled(true);
			vCliente.getBtnCanCli().setEnabled(true);
			vCliente.getTxtApeCli().setEditable(true);
			vCliente.getTxtNomCli().setEditable(true);
			vCliente.getTxtDirCli().setEditable(true);
			vCliente.getTxtTelCli().setEditable(true);
			vCliente.getTxtCedCli().setEditable(false);
		}
		private boolean validarCedula(String Ced){
			boolean valida=true;
			int resp;
			String numero="0123456789";
			char caracter;
		    for(int i=0;i<Ced.length();i++){
		    	caracter=Ced.charAt(i);
		        resp=numero.indexOf(caracter);
		    	if(resp==-1 && valida)
		    	valida=false;
		      }
			return valida;
				
		}
		private boolean validarLetras(String letras){
			boolean valida=true;
			int resp;
			String numero="0123456789";
			char caracter;
			if(letras.length()<60){
		    for(int i=0;i<letras.length();i++){
		    	caracter=letras.charAt(i);
		        resp=numero.indexOf(caracter);
		    	if(resp!=-1 && valida)
		    	valida=false;
		    	i++;
		      }		
		}
			return valida;	
		}

}

